package 链表.middle;


/**
 * @author Lw中
 * @date 2020/9/24 11:52
 */
public class SanErBa {

    class ListNode {
        int val;
        ListNode next;
        ListNode(int x) {
            val = x;
            next = null;
        }
    }

    /**
     * 奇偶链表
     * @param head
     * @return
     */
    public ListNode oddEvenList(ListNode head) {
        if (head == null) {
            return null;
        }
        /* 第一个节点用于记录头结点，第二个节点用于记录头节点下一个节点，第三个节点用于记录第二个节点 */
        ListNode odd = head, even = head.next, evenHead = even;
        /**
         * LWZ TODO : 2020/9/24 循环体中的节点转换不清楚
         *
         */
        while (even != null && even.next != null) {
            // 记录某节下一个位置的节点
            odd.next = even.next;
            // 记录当前节点
            odd = odd.next;
            even.next = odd.next;
            even = even.next;
        }
        odd.next = evenHead;
        return head;
    }

    public static void main(String[] args) {

    }

}
